Shell (computing)

A shell is a piece of software that provides an interface for users of an operating system which provides access to the services of a kernel. However, the term is also applied very loosely to applications and may include any software that is "built around" a particular component, such as web browsers and email clients that are "shells" for HTML rendering engines. The name shell originates from shells being an outer layer of interface between the user and the internals of the operating system (the kernel).

Operating system shells generally fall into one of two categories: command-line and graphical. Command-line shells provide a command-line interface (CLI) to the operating system, while graphical shells provide a graphical user interface (GUI). In either category the primary purpose of the shell is to invoke or "launch" another program; however, shells frequently have additional capabilities such as viewing the contents of directories.

The relative merits of CLI- and GUI-based shells are often debated. CLI proponents claim that certain operations can be performed much faster under CLI shells than under GUI shells (such as moving files, for example). However, GUI proponents advocate the comparative usability and simplicity of GUI shells. The best choice is often determined by the way in which a computer will be used. On a server mainly used for data transfers and processing with expert administration , a CLI is likely to be the best choice. However, a GUI would be more appropriate for a computer to be used for image or video editing and the development of the above data.

In expert systems, a shell is a piece of software that is an "empty" expert system without the knowledge base for any particular application.[1]

Contents

History

The first Unix shell, Ken Thompson's sh,[2] was modeled after the Multics shell,[3] itself modeled after the RUNCOM[4] program Louis Pouzin showed to the Multics Team. The 'rc' suffix on some Unix configuration files (e.g. ".vimrc"), is a remnant of the RUNCOM ancestry of Unix shells.

Practically all modern operating system shells can be used in both interactive and batch mode, the latter usually by specifying the name of a text file with commands listed therein. Batch mode use of shells usually involves structures, conditionals, variables, and other elements of programming languages; some have the bare essentials needed for such a purpose, others are very sophisticated programming languages in and of themselves. Conversely, some programming languages can be used interactively from an operating system shell or in a purpose-built programmer.

Text (CLI) shells

Unix shells

Notable historic or popular Unix shells include:

Several of the above are available with DOS and Windows software packages which allow for interoperability with Unix at varying levels. Common examples are the MKS Toolkit (sh, bash, ksh, csh, tclsh, rsh with version 8.0 and subsequent), UnxUtils, UWIN (AT&T Unix for Windows, also abbreviated U/WIN), Cygwin, DJGPP, Interix, and other programmes of the same type. Windows Services For Unix in most versions provides a Korn and C shell as well as Perl capable of command line use.

Unix shells are also available for other operating systems including OS/2 and VMS, as well as the main VMS shell, DCL being available for DOS, Windows, OS/2, and Unix-type systems in various forms.

Versions of DOS and Windows NT shells are also available for Unix/Linux type systems.

Non-Unix shells

Shells for programming languages

Noteworthy interactive versions of programming languages include:

Shells for Other Software

Some implementations of telnet, other telecommunications tools, and other types of software can have shells capable of interactive and batch/script use.

Graphical (GUI) shells

On Microsoft Windows

Modern versions of the Microsoft Windows operating system use Windows Shell as their shell. Explorer provides the familiar desktop environment, start menu, and task bar, as well as the file management functions of the operating system. Older versions also include Program Manager (progman.exe) which was the shell for the 3.x series of Microsoft Windows, and which in fact ships with later versions of Windows of both the 95 and NT types at least through Windows XP. The interfaces of Windows versions 1 and 2 were markedly different.

Desktop apps, like iTVmediaPlayer, are also considered shells; as long as they use a third-party engine. Likewise, many individuals and developers dissatisfied with the interface of Windows Explorer have developed software that either alters the functioning and appearance of the shell or replaces it entirely. WindowBlinds by StarDock is a good example of the former sort of application. LiteStep, SharpE and Emerge Desktop are good examples of the latter.

Interoperability programmes and purpose-designed software allows Windows users to also use equivalents of many of the various Unix-based GUIs discussed below as well as Macintosh, and an equivalent of the OS/2 Presentation Manager for version 3.0 is available to run some OS/2 programmes under some conditions using the OS/2 environmental subsystem in versions of Windows NT. For an example of the first, X Window-type environments can be run using combinations of Windows/Unix interoperability packages, communications suites such as Hummingbird Connectivity, and/or X server progammes for Windows such as WinAxe and others.

On X Window System

Graphical (GUI) shells typically build on top of a windowing system. In case of the X Window System, there are both independent X window managers, and complete desktop environments which depend on a window manager.

X Window System environments (mainly for Unix-like operating systems):

On other platforms

References

  1. ^ British Computer Society: The BCS glossary of ICT and computing terms, Pearson Education, 2005, ISBN 0131479571, 9780131479579, page 135
  2. ^ http://v6shell.org/history/
  3. ^ http://www.multicians.org/unix.html
  4. ^ http://www.multicians.org/shell.html
  5. ^ Console
  6. ^ PyCmd
  7. ^ developer.mozilla.org/en/Setting_up_extension_development_environment
  8. ^ developer.mozilla.org/en/JavaScript_shells; Server-side_JavaScript (comparison)

See also